#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include <clocale>

using namespace std;
void split(string s);
int countlatlet();
int countwordefis();
int countworlenmenshthree();
string findmaxlenword();
vector<string> words;

int main()
{
	setlocale(LC_ALL, "Russian");
	string s;
	cout << "Enter words:\n";
	getline(cin, s);
	split(s);
	if (words.size() < 2)
	{
	cout << "Мало данных для анализа";
	}
	else
	{
	    cout << "Кол-во слов: " << words.size() << endl;
	    cout << "Кол-во слов содержащих латинский символ: " << countlatlet() << endl;
	    cout << "Кол-во слов не превышающих 3 символа: " << countworlenmenshthree() << endl;
	    cout << "Кол-во слов в составе которых имеется дефис: " << countwordefis << "\n\n";
	    cout << "Самое длинное слово: " << findmaxlenword() << endl;
	    cout << "Длина слова: " << findmaxlenword().size();
	}
}

void split(string s)
{
	string word;
	int index;
	while (s != "")
	{
		index = s.find(' ');
		if (index > s.size())
		{
			word = "" + s;
			words.push_back(word);
			s = "";
		}
		else
		{
			word = s.substr(0, index);
			words.push_back(word);
			++index;
			s.erase(0, index);
		}
	}
}

int countlatlet()
{
	string letters = "qwertyuiopasdfghjklmbvcxzQWERTYUIOPLKJHGFDSAZXCVBNM";
	int numwords = 0;
	bool flag = false;
	for (int i = 0; i < words.size(); ++i)
	{
		for (int j = 0; j < words[i].size(); ++j)
		{
			for (int k = 0; k < letters.size(); ++k)
			{
				if (words[i][j] == letters[k])
				{
					++numwords;
					flag = true;
					break;
				}
			}
			if (flag)
			{
				break;
			}
		}
		flag = false;
	}
	return numwords;
}

int countwordefis()
{
	int numwords = 0;
	for (int i = 0; i < words.size(); ++i)
	{
		if (words[i].size() == 1)
		{
			continue;
		}
		if (words[i].find('-') < words[i].size())
		{
			++numwords;
		}
	}
	return numwords;
}

int countworlenmenshthree()
{
	int numwords = 0;
	for (int i = 0; i < words.size(); ++i)
	{
	    if (words[i] != "-")
	    {
		    if (words[i].size() <= 3)
		    {
			    ++numwords;
		    }
	    }
	}
	return numwords;
}

string findmaxlenword()
{
	string maxword = "";
	string symph = "!@#$%^&*()_=+[]{}:|<>,./?";
	for (int i = 0; i < words.size(); ++i)
	{
		if (words[i].size() > maxword.size())
		{
			maxword = words[i];
		}
	}
	for (int i = 0; i < symph.size(); ++i)
	{
		if (maxword[maxword.size() - 1] == symph[i])
		{
			maxword.erase(maxword.size() - 1);
		}
	}
	return maxword;
}
